package com.wn.demo02;

import java.util.function.Function;
import java.util.function.Supplier;

/**
 * @author yellow Docter
 * @date 2024 -06-17
 * @desc
 *   Function 函数型接口 T  R 对类型为T的对象应用操作，并返回结果。
 *           结果是R类型的对象。包含方法：R apply(T t);
 *
 */
public class Demo04 {

    public static void main(String[] args) {

        Function<String,String> function = (x)->x.toUpperCase();
        String hello = function.apply("hello");
        System.out.println("hello = " + hello);

        //给你一个对象 返回一个name 字段

        Function<User,String> func2 = (x)->x.getName();

        User user = new User();
        user.setName("aa");
        user.setAge(20);
        String apply = func2.apply(user);
        System.out.println("apply = " + apply);

        //mysql 的 数据库的字段(javaA对象)  ----> javaBean(javaB对象)
        // 服务java对象(javaA对象) ----> 页面的数据 (javaB对象)

        Consumer consumer = new Consumer();
        consumer.setName("admin");
        consumer.setAge(30);
        consumer.setPhone("1856623");

        //List 的操作 会 for来操作 效率底 可以使用stream
        // 这里用函数式接口效率高很多

        Function<Consumer,User> func3 = (x)->{
            User u = new User();
            u.setName(x.getName());
            u.setAge(x.getAge());
            return u;
        };

        User apply1 = func3.apply(consumer);
        System.out.println("apply1 = " + apply1);

    }
}
